package com.halfsword.creativecraft.block.custom.machine.blockentity.modules;

import com.halfsword.creativecraft.modules.interfaces.IMachineModule;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState;

/**
 * 机器模块基础实现类
 * 提供模块的基本功能和生命周期管理
 */
public abstract class MachineModule implements IMachineModule {

    protected final String moduleId;
    protected boolean isEnabled = true;

    public MachineModule(String moduleId) {
        this.moduleId = moduleId;
    }

    @Override
    public String getModuleId() {
        return moduleId;
    }

    @Override
    public abstract void tick(Level level, BlockPos pos, BlockState state);

    @Override
    public void onLoad() {
        // 默认实现为空
    }

    @Override
    public void onUnload() {
        // 默认实现为空
    }

    @Override
    public boolean shouldExecuteOnClient() {
        return false; // 默认不在客户端执行
    }

    @Override
    public boolean shouldExecuteOnServer() {
        return true; // 默认在服务端执行
    }

    /**
     * 启用模块
     */
    public void enable() {
        this.isEnabled = true;
    }

    /**
     * 禁用模块
     */
    public void disable() {
        this.isEnabled = false;
    }

    /**
     * 检查模块是否启用
     * @return 模块是否启用
     */
    public boolean isEnabled() {
        return isEnabled;
    }

    /**
     * 设置模块启用状态
     * @param enabled 是否启用
     */
    public void setEnabled(boolean enabled) {
        this.isEnabled = enabled;
    }

    /**
     * 模块初始化方法
     * 在模块注册后调用
     */
    public void initialize() {
        // 默认实现为空
    }

    /**
     * 模块验证方法
     * 检查模块配置是否正确
     * @return 验证结果，null表示验证通过，否则返回错误信息
     */
    public String validate() {
        return null; // 默认验证通过
    }
}